package 贪心算法._135_分发糖果;

import java.util.Arrays;

/** 135
 * 老师想给孩子们分发糖果，有 N 个孩子站成了一条直线，老师会根据每个孩子的表现，预先给他们评分。
 *
 * 你需要按照以下要求，帮助老师给这些孩子分发糖果：
 *
 * 每个孩子至少分配到 1 个糖果。
 * 评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果。
 * 那么这样下来，老师至少需要准备多少颗糖果呢？
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/candy
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Solution {
    public int candy(int[] ratings) {
        int[] arr=new int[ratings.length];
        int ans=0;
        Arrays.fill(arr,1);
        for(int i=0;i<ratings.length-1;i++){
            if(ratings[i]<ratings[i+1]){
                arr[i+1]=arr[i]+1;
            }
        }
        for(int j=ratings.length-1;j>0;j--){
            if(ratings[j-1]>ratings[j]&&arr[j-1]<=arr[j]){
                arr[j-1]=arr[j]+1;
            }
        }
        for(int i:arr){
            ans+=i;
        }
        return ans;
    }

    public static void main(String[] args) {
        System.out.println(new Solution().candy(new int[]{1,3,4,5,2}));
    }
}
